using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections;

/// <summary>
/// Summary description for TareasCtrl
/// </summary>
public class TareasCtrl
{
	
    private TareasBD bdTareas;
    private static TareasEnt entTarea;
    private AtributosCtrl atributos;

    public TareasCtrl()
    {
        this.bdTareas = new TareasBD();
        this.atributos = new AtributosCtrl();
    }

    //Obtiene y retorna un dataTable con la informacion de tareas
    public DataTable ActualizarGrid()
    {
        return this.bdTareas.ConsultarTareas();
    }
    //Recibe el id de una tarea y consulta a la tarea con ese id almacenando los datos
    //en un objeto entidad y retorna ese objeto con la informacion de la tarea consultada
    public TareasEnt ConsultarTarea(int id) 
    {
        entTarea = this.bdTareas.ConsultarTarea(id);
        return entTarea;
    }
    //Encapsula los datos de la nueva tarea( nombre y descripcion ) creando un nuevo objeto 
    //entidad de tareas y envia el objeto como parametro al metodo InsertarTarea de la controladora
    //de base de datos. Retorna true si se realizo la insercion con exito y false en caso contrario
    public bool InsertarTarea(string nombre, string descripcion)
    {
        TareasEnt tarea = new TareasEnt(nombre, descripcion);
        return this.bdTareas.InsertarTarea(tarea);
    }
    //Se llama al metodo eliminar de la controladora base de datos enviado como parametro
    //el id de la ultima tarea consultada.Retorna true si se realizo la eliminacion con exito 
    //y false en caso contrario
    public bool EliminarTarea()
    {
        return this.bdTareas.EliminarTarea(entTarea.Id);
    }
    //Encapsula los datos recibidos por parametro junto con el ID de la ultima tarea 
    //consultada y envia el objeto creado como parametro al metodo Actuliazartarea de 
    //controladora de base de datos. Retorna true si se realizo la modificacion con exito 
    //y false en caso contrario
    public bool ActualizarTarea(string nombre, string descripcion)
    {
        TareasEnt tarea = new TareasEnt(entTarea.Id, nombre, descripcion);
        return this.bdTareas.ActualizarTarea(tarea);
    }
    //Retorna todos los atributos de modulo
    public AtributosCtrl SolicitarEstadoAtributos()
    {
        return this.atributos;
    }
    //Realiza la accion correspondiente al estado en el que se encuentra
    //segun el primer parametro, si es true modifica de lo contario inserta.
    public bool AccionesAceptar(bool modificando, string nombre, string descripcion)
    {
        bool resultado;

        if (modificando)
        {
            resultado = this.ActualizarTarea(nombre, descripcion);
        }
        else
        {
            resultado = this.InsertarTarea(nombre, descripcion);
        }
        //Retorna true si la operacion realizada fue exitosa y false en caso contrario
        return resultado;
    }

    public List<TareasEnt> RecuperarTareas()
    {
        return bdTareas.RecuperarTareas();
    }

}
